The present invention relates to computer system management, and more specifically, to using a compiler to organize data placement for execution of executables in computer systems that include active memory devices.
Computer systems often require a considerable amount of high speed memory, such as random access memory (RAM), to hold information, such as data and programs, when a computer is powered and operational. Memory device densities have continued to grow as computer systems have increased performance and complexity.
In operation, a compiler in memory receives a program and compiles it to produce an executable. The executable is loaded into a virtual address and is accessed by an operating system (OS) at runtime. The OS may load instructions into the physical memory prior to execution of certain portions of code. In some cases, instructions that are loaded into physical memory cannot be dynamically adjusted during runtime, thus resulting in reduced performance. The instructions may be loaded as pages in physical memory. If a page is loaded in a memory at a first location and a processor is located in a separate second location, the page may not be efficiently accessed by the processor. In addition, in cases with a limited amount of memory, a limited amount of data is loaded into physical memory, leading to reduced performance.